/*
 Copyright 2009 Christian Sprecher

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
 */

package widgets

import javax.swing.tree.DefaultTreeCellRenderer
import java.awt.Component
import javax.swing.JTree
import javax.swing.ImageIcon
import helpers.JcrHelper


public class JcrTreeCellRenderer extends DefaultTreeCellRenderer{
   //PROBLEMS WITH WEBSTART!!
    private ImageIcon folderIcon = new ImageIcon(getClass().getResource('/icons/simple/folder.gif'))
    private ImageIcon leafIcon = new ImageIcon(getClass().getResource('/icons/simple/page.gif'))
    private ImageIcon multimediaIcon = new ImageIcon(getClass().getResource('/icons/simple/page_code.gif'))

    private JcrHelper helper

    
    public Component getTreeCellRendererComponent(
                                JTree tree,
                                Object value,
                                boolean sel,
                                boolean expanded,
                                boolean leaf,
                                int row,
                                boolean hasFocus) {

        super.getTreeCellRendererComponent(tree, value, sel,expanded, leaf, row,hasFocus)
        //default
        setIcon(folderIcon)
        //default for leafs
        if(leaf) setIcon(leafIcon)
        //from here on, jcr helper has to exist!
        if(helper) {
            helper.withNode(value.userObject) { node ->
                if(node.hasNode("jcr:content")) {
                    setIcon(multimediaIcon)   
                }
            }
            //TODO: version stuff (checked out, has old versions etc)
        }
        return this
       }
    }